简述
允许一个对象在其内部状态改变时改变它的行为,对象看起来似乎修改了它的类。
酒店的台灯开关顺序通常是:关灯 → 弱等 → 强灯 → 关灯,这这种行为就是状态。
使用场景
- 文件状态
- 角色动作
- ..
案例
如上台灯的状态行为,用多层if可以很快的编写代码,但假如新设计的台灯又多了一种状态呢?
随着情况越来越多,显然if的方式会违反开发-封闭原则,后续维护将变得复杂。
状态模式能够很好的解决这种问题。
1 | var Light = function () { |
允许一个对象在其内部状态改变时改变它的行为,对象看起来似乎修改了它的类。
酒店的台灯开关顺序通常是:关灯 → 弱等 → 强灯 → 关灯,这这种行为就是状态。
如上台灯的状态行为,用多层if可以很快的编写代码,但假如新设计的台灯又多了一种状态呢?
随着情况越来越多,显然if的方式会违反开发-封闭原则,后续维护将变得复杂。
状态模式能够很好的解决这种问题。
1 | var Light = function () { |